package principal;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;
import modelesObjet.ModeleEchelle;

/**
 * Classe abstraite à partir de laquelle dérive {@link EchelleQualite}, {@link EchelleRR} et {@link EchelleRRCumul}
 * 
 * @author laurent & kevin
 */
public class Echelle implements ModeleEchelle {
	/**
	 * 
	 * @param fichier	Fichier où lire les couleurs sous forme d'entiers.
	 */
	public Echelle(File fichier) {
//		System.out.println("Appel du constructeur de " + this.getClass().getName());
		try {
			Scanner scan = new Scanner(fichier) ;
			nbCouleurs = scan.nextInt() ;
			tabCouleurs = new int [nbCouleurs] ;
			for (int i=0; i < nbCouleurs ; i++) {
				tabCouleurs[i] = scan.nextInt() ;
			}
			scan.close() ;
		} catch (FileNotFoundException e) {
			System.err.println("Fichier de couleur " + fichier + " manquant." );
			System.err.println("Fin du programme");
			System.exit(1) ;
		} catch (InputMismatchException e) {
			System.err.println("Le fichier de couleur " + fichier + " n'est pas un fichier de couleur valide.");
			System.err.println("Fin du programme");
			System.exit(1) ;
		}
//		nbCouleurs = scan.nextInt() ;
//		tabCouleurs = new int [nbCouleurs] ;
//		for (int i=0; i < nbCouleurs ; i++) {
//			tabCouleurs[i] = scan.nextInt() ;
//		}
	}
	
	
	/**
	 * @return Un tableau d'entiers. Les couleurs de l'échelle.
	 */
	@Override
	public int[] getTableauCouleurs() {
		return tabCouleurs ;
	}
	
	
	/**
	 * @return 	Un entier. Le nombre de couleur composant l'échelle.
	 * 		
	 */
	public int getNbCouleurs() {
		return nbCouleurs ;
	}
	
	
	/** 
	 * @return 	Un tableau de double. Ex : 0,0.5,1,...
	 * 
	 */
	@Override
	public double[] getTableauValeurs() {
		return tabValeurs;
	}
	
	/**
	 * Mutateur pour les valeurs du tableau
	 * @return	Une chaine. Ex : "lame d'eau en mm" .
	 */
	@Override
	public String getUnite() {
		return unite;
	}
	
	
	
	/**
	 * @param tabValeurs
	 * 
	 */
	public void setTableauValeurs(double [] tabValeurs) {
		this.tabValeurs = tabValeurs ;
	}
	/**
	 * 
	 * @param unite
	 */
	public void setUnite(String unite) {
		this.unite = unite ;
	}
	
	private int [] tabCouleurs ;
	private int nbCouleurs ;
	private double [] tabValeurs ;
	private String unite ;
}
